﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using SIMCObjetoNegocio;

public partial class WUCModificarUsuario : System.Web.UI.UserControl
{
    private ServicioSeguridad.Service1Client servicio = new ServicioSeguridad.Service1Client();

    protected void Page_Load(object sender, EventArgs e)
    {
        lblMensaje.Text = "";

        if (!IsPostBack)
        {
            if (Request.QueryString["usuario"] != null)
            {
                string NameUsuario = Request.QueryString["usuario"].ToString();
                Usuario usuario = servicio.GetUsuario(NameUsuario, false);
                InicializarVentana(usuario);
            }
        }
    }
    private void InicializarVentana(Usuario usuario)
    {
        txtNombreUsuario.Text = usuario.NombreUsuario;
        txtTelefono.Text = usuario.Telefono;
        txtCorreo.Text = usuario.Email;
        txtNombre.Text = usuario.Nombre;
        txtApellido.Text = usuario.Apellido;
        if (usuario.IsApproved)
        {
            System.Drawing.Color GreenColor = System.Drawing.ColorTranslator.FromHtml("#00CC00");
            lblActivoInactivo.ForeColor = GreenColor;
            lblActivoInactivo.Text = "ACTIVO";
        }
        else
        {
            lblActivoInactivo.ForeColor = System.Drawing.Color.Red;
            lblActivoInactivo.Text = "INACTIVO";
            btnBloqueo.Text = "Desbloquear usuario";
        }
    }
    protected void btnModificar_Click(object sender, EventArgs e)
    {
        try
        {
            Usuario user = servicio.GetUsuario(txtNombreUsuario.Text, false);

            if (EsUsuarioInterno(user))//Solo se puede modificar si es un usuario externo
            {

                user.Telefono = txtTelefono.Text;
                user.Email = txtCorreo.Text;
                user.Nombre = txtNombre.Text;
                user.Apellido = txtApellido.Text;

                servicio.UpdateUsuario(user);

                lblMensaje.ForeColor = System.Drawing.ColorTranslator.FromHtml("#00CC00");
                lblMensaje.Text = "El usuario ha sido modificado correctamente";


            }
            else
            {
                lblMensaje.ForeColor = System.Drawing.Color.Red;
                lblMensaje.Text = "El usuario es interno. No se pueden hacer cambios.";
            }
        }
        catch (Exception ex)
        {
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text = "Ha ocurrido un inconveniente: " + ex.Message;
        }
    }

    private static bool EsUsuarioInterno(Usuario user)
    {
        return user.TipoUsuario == TipoUsuario.Externo;
    }
    protected void btnReinicioPassword_Click(object sender, EventArgs e)
    {
        string paswordTemporal = servicio.ResetPassword(txtNombreUsuario.Text, "");
        lblMensaje.ForeColor = System.Drawing.ColorTranslator.FromHtml("#00CC00");
        lblMensaje.Text = "La nueva contraseña del usuario es: " + paswordTemporal;
    }
    protected void btnBloquear_Click(object sender, EventArgs e)
    {
        try
        {
            Usuario user = servicio.GetUsuario(txtNombreUsuario.Text, false);

            if (user.IsApproved)
            {
                servicio.BloquearUsuario(user.NombreUsuario);
            }
            else
            {
                servicio.DesbloquearUsuario(user.NombreUsuario);
            }

            InicializarVentana(user);
        }
        catch (Exception ex)
        {
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text = "Ha ocurrido un inconveniente: " + ex.Message;
        }
    }
}